package com.yuw.arr;

public class TestDriver {
    public static void main(String[] args) {
        // 一维数组的使用
        test01();
        System.out.println("\n----------------------------------------------");
        test02();
    }

    /**
     * 数组——二维数组
     */
    public static void test02() {
        // 二维数组的声明和定义
        int[][] arr;
        int arr0[][];// 不推荐
        int[][] arr1 = new int[3][4];
        int[][] arr2 = new int[][]{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; // 可能产生不规则的二维数组
        int[][] arr3 = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; // 可能产生不规则的二维数组

        // 可能产生不规则的二维数组
        int[][] arr4 = new int[3][]; // 只给定了行数，声明时可以，但是使用之前需要 把每行的列数给出
        // 初始化列数
        arr4[0] = new int[]{1, 2, 3, 4};
        arr4[1] = new int[]{5, 6, 7};
        arr4[2] = new int[]{9, 10, 11, 12};

        // 二维数组的初始化
        // 遍历二维数组的行数
        for (int i = 0; i < arr1.length; i++) {
            // 遍历二维数组的列数
            for (int j = 0; j < arr1[i].length; j++) {
                // 给二维数组的元素进行赋值
                arr1[i][j] = i * (arr1[i].length - 1) + j;
            }
        }

        // 二维数组的遍历
        for (int i = 0; i < arr1.length; i++) {
            // 遍历二维数组的列数
            for (int j = 0; j < arr1[i].length; j++) {
                // 给二维数组的元素进行赋值
                System.out.print(" " + arr1[i][j]);
            }
            // 换行
            System.out.println();
        }

        // 不规则二维数组的遍历
        System.out.println("不规则二维数组的遍历：");
        // 二维数组的遍历
        for (int i = 0; i < arr4.length; i++) {
            // 遍历二维数组的列数
            for (int j = 0; j < arr4[i].length; j++) {  // 当前行的数组的列数应该使用i下标获取，否则有可能引发数组下标访问越界
                // 给二维数组的元素进行赋值
                System.out.print(" " + arr4[i][j]);
            }
            // 换行
            System.out.println();
        }
    }

    /**
     * 数组——一维数组
     */
    public static void test01() {
        // 数字的声明和定义
        int[] arr;
        int arr0[]; // 不推荐使用
        int[] arr1 = new int[5]; // 数组的元素个数是5个 // 元素的默认值为0
        int[] arr2 = new int[]{1, 2, 3, 4, 5}; // 数组的长度由 {} 中的元素的个数决定
        int[] arr3 = {1, 2, 3, 4, 5}; // 使用 {} 初始化  ?

        //数组的初始化
        for (int i = 0; i < arr1.length; i++) {
            // 依次给每个数组元素进行赋值
            arr1[i] = i + 1;
        }

        // 数组的遍历
        for (int i = 0; i < arr1.length; i++) {
            System.out.print(" " + arr1[i]);
        }

    }
}
